home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 June: Reference Library / Dev.CD Jun 96 RL / Dev.CD Jun 96 RL.toast / Technical Documentation / develop / develop Issue 24 / develop Issue 24 code / Scriptable Database 1.0a15 / Foundation / AbstractProperty.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-19  |  4.1 KB  |  111 lines  |  [TEXT/CWIE]

  1.  
  2. #ifndef __ABSTRACTPROPERTY__
  3. #define __ABSTRACTPROPERTY__
  4.  
  5. //
  6. // TAbstractDesignator is the base class of TAbstractProperty
  7. //
  8. #include "AbstractDesignator.h"
  9.  
  10.  
  11. //========================================================================================
  12. //    CLASS TAbstractProperty
  13. //========================================================================================
  14.  
  15. class TAbstractProperty : public TAbstractDesignator
  16.     {
  17. protected:
  18.     DescType                            fPropertyIdentifier;
  19.  
  20. public:
  21.     DeclareSmallClassData(TAbstractProperty, TAbstractDesignator);
  22.  
  23.                                         TAbstractProperty() : fPropertyIdentifier(typeNull) {};
  24.     virtual                                ~TAbstractProperty();
  25.     void                                IAbstractProperty(TAbstractScriptableObject* objectOfDesignation, DescType propertyIdentifier);
  26.  
  27.     // Basic stuff
  28.     
  29.     virtual DescType                    ObjectClass(const TAETransaction& t, Boolean recordedClass = false);
  30.     virtual DescType                    PropertyIdentifier();
  31.     virtual Boolean                        DerivedFromOSLClass(const TAETransaction& t, DescType objectClass);
  32.  
  33.     // Other useful methods
  34.  
  35.     virtual void                        MakeKeyDataForSelf(const TAETransaction& t, DescType& keyForm, TDescriptor& keyData);
  36.     
  37.     // Accessors:
  38.     
  39. //    virtual TAbstractScriptableObject*    AccessByIndex(DescType desiredClass, long index);
  40.     virtual TAbstractObjectIterator*    ElementIterator(const TAETransaction&);
  41.     };
  42.  
  43.  
  44.     
  45.  
  46. //========================================================================================
  47. //    class TPropertyDataDescription
  48. //========================================================================================
  49.  
  50.  
  51. class TPropertyDataDescription
  52.     {
  53. private:
  54.     unsigned long            fPropertyIdentifier;
  55.     unsigned long            fAdditionalInfo;
  56.     unsigned long            fDefaultType;
  57.     unsigned long            fBestType;
  58.  
  59. public:
  60.     TPropertyDataDescription(const TPropertyDataDescription& propertyDescription) :
  61.         fPropertyIdentifier(propertyDescription.PropertyIdentifier()),
  62.         fAdditionalInfo(propertyDescription.AdditionalInfo()),
  63.         fDefaultType(propertyDescription.DefaultType()),
  64.         fBestType(propertyDescription.BestType()) {}
  65.     TPropertyDataDescription(const TPropertyDescription& propertyDescription) :
  66.         fPropertyIdentifier(propertyDescription.PropertyIdentifier()),
  67.         fAdditionalInfo(propertyDescription.AdditionalInfo()),
  68.         fDefaultType(propertyDescription.DefaultType()),
  69.         fBestType(propertyDescription.BestType()) {}
  70.     TPropertyDataDescription(unsigned long propertyIdentifier, unsigned long additionalInfo, unsigned long defaultType, unsigned long bestType = typeWildCard) :
  71.         fPropertyIdentifier(propertyIdentifier),
  72.         fAdditionalInfo(additionalInfo),
  73.         fDefaultType(defaultType),
  74.         fBestType(bestType == typeWildCard ? defaultType : bestType) {}
  75.     
  76.     unsigned long            PropertyIdentifier() const        { return fPropertyIdentifier; }
  77.     unsigned long            AdditionalInfo() const            { return fAdditionalInfo; }
  78.     unsigned long            DefaultType() const                { return fDefaultType; }
  79.     unsigned long            BestType() const                { return fBestType; }
  80.     
  81.     operator TPropertyDescription*() { return (TPropertyDescription*) this; }
  82.     };
  83.  
  84.  
  85. //========================================================================================
  86. //    CLASS TGenericProperty
  87. //========================================================================================
  88.  
  89. class TGenericProperty : public TAbstractProperty
  90.     {
  91. private:
  92.     unsigned long                        fAdditionalInfo;
  93.     
  94. public:
  95.     DeclareSmallClassData(TGenericProperty, TAbstractProperty);
  96.  
  97.                                         TGenericProperty() : fAdditionalInfo(0) {};
  98.     virtual                                ~TGenericProperty();
  99.     void                                IGenericProperty(TAbstractScriptableObject* objectOfDesignation, const TPropertyDataDescription& propertyDescription);
  100.  
  101.     virtual DescType                    BestType(const TAETransaction& t, DescType propertyName);
  102.     virtual DescType                    DefaultType(const TAETransaction& t, DescType propertyName);
  103.     virtual Boolean                        CanReturnDataOfType(const TAETransaction& t, DescType propertyName, DescType desiredType);
  104.  
  105.     unsigned long                        AdditionalInfo() { return fAdditionalInfo; };
  106.     virtual TDescriptor                    GetProperty(const TAETransaction& t, DescType propertyName, DescType desiredType, unsigned long additionalInfo = 0);
  107.     virtual void                        SetProperty(const TAETransaction& t, DescType propertyName, TDescriptor& data, unsigned long additionalInfo = 0);
  108.     };
  109.  
  110. #endif
  111.